home *** CD-ROM | disk | FTP | other *** search
/ Cream of the Crop 1 / Cream of the Crop 1.iso / PROGRAM / DDJ0992.ARJ / MATMATH.C < prev    next >
Text File  |  1991-09-29  |  1KB  |  45 lines

  1. /* Matrix arithmetic functions.
  2.    Tested with Borland C++ 2.0 in the small model */
  3.  
  4. /* Matrix multiplies Xform by SourceVec, and stores the result in
  5.    DestVec. Multiplies a 4x4 matrix times a 4x1 matrix; the result
  6.    is a 4x1 matrix, as follows:
  7.    --     --     -- --     -- --
  8.    |       |     | 4 |     | 4 |
  9.    |  4x4  |  X  | x |  =  | x |
  10.    |       |     | 1 |     | 1 |
  11.    --     --     -- --     -- -- */
  12. void XformVec(double Xform[4][4], double * SourceVec,
  13.    double * DestVec)
  14. {
  15.    int i,j;
  16.  
  17.    for (i=0; i<4; i++) {
  18.       DestVec[i] = 0;
  19.       for (j=0; j<4; j++)
  20.          DestVec[i] += Xform[i][j] * SourceVec[j];
  21.    }
  22. }
  23.  
  24. /* Matrix multiplies SourceXform1 by SourceXform2 and stores the
  25.    result in DestXform. Multiplies a 4x4 matrix times a 4x4 matrix;
  26.    the result is a 4x4 matrix, as follows:
  27.    --     --     --     --     --     --
  28.    |       |     |       |     |       |
  29.    |  4x4  |  X  |  4x4  |  =  |  4x4  |
  30.    |       |     |       |     |       |
  31.    --     --     --     --     --     -- */
  32. void ConcatXforms(double SourceXform1[4][4], double SourceXform2[4][4],
  33.    double DestXform[4][4])
  34. {
  35.    int i,j,k;
  36.  
  37.    for (i=0; i<4; i++) {
  38.       for (j=0; j<4; j++) {
  39.          DestXform[i][j] = 0;
  40.          for (k=0; k<4; k++)
  41.             DestXform[i][j] += SourceXform1[i][k] * SourceXform2[k][j];
  42.       }
  43.    }
  44. }
  45.